/**
 * 自定义 404 错误类
 * */

class NotFoundError extends Error {
    constructor(message) {
        super(message);
        this.name = "NotFoundError";
    }
}

/**
 * 请求成功
 * @param res
 * @param message
 * @param data
 * @param code
 * */
const success = (res, message, data = {}, code = 200) => {
    res.status(code).json({
        status: 200,
        message,
        data
    })
}

/**
 * 请求失败
 * @param res
 * @param error
 * */
const failure = (res, error) => {
    if (error.name == 'SequelizeValidationError') {
        const errors = error.errors.map(e => e.message);
        res.status(400).json({
            status: 400,
            message: '请求参数错误.',
            errors
        });
    } else if (error.name == 'NotFoundError') {
        res.status(404).json({
            status: 404,
            message: '资源不存在',
            errors: [errors.message]
        });
    } else {
        res.status(500).json({
            status: 500,
            message: "服务器错误",
            errors: [errors.message]
        });
    }
}

module.exports = {
    NotFoundError,
    success,
    failure
}
